
// merchant.txt
// Author : Terror's Martyr (modified by Stareye)
// Email : terrorsmartyr@wi.rr.com
//
// A very simple, naive text. Merchant attacks anything it hates nearby.
// Once it has won, it returns to its home.  When talked to, Merchant skips
// talking and moves directly onto shopping with a generic, terse
// description of his/her goods.
// (A warning for designers- don't overuse or abuse this.  You can
// make your scenario far less interesting if you use this to slice
// out your dialogue entirely.)
//
//     NOTE: Assumes default shops set up in a scenario script by default!
//           This script RESERVES stuff done flag 98,9.  Do not use it in
//           your scenario!
//
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Shop Type
//     0 - Armor
//     1 - Weapons
//     2 - Tools
//     3 - Missiles
//     4 - Potions
//     5 - Food
//   Cell 4 - Prices (0-6, 6 is higher)
//   Cell 5 - Selling Rates (0-6, 0 is pays more, -1 is doesn't buy)

begincreaturescript;

variables;

short i,target;
string shop_type;

body;

beginstate INIT_STATE;
        if (get_memory_cell(0) == 2)
                set_mobility(ME,0);
        break;

beginstate DEAD_STATE;
        // Set the appropriate stuff done flag for this character being dead
        if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
                set_flag(get_memory_cell(1),get_memory_cell(2),1);
break;

beginstate START_STATE; 
        // if I have a target for some reason, go attack it
        if (target_ok()) {
                if (dist_to_char(get_target()) <= 16)
                        set_state(3);
                        else set_target(ME,-1);
                }
        
        // Look for a target, attack it if visible
        if (select_target(ME,8,0)) {
                do_attack();
                set_state(3);
                }
                
        // Have I been hit? Strike back!
        if (who_hit_me() >= 0) {
                set_target(ME,who_hit_me());
                do_attack();
                set_state(3);
                }
                
        // Otherwise, just peacefully move around. Go back to start, if I'm too far
        // from where I started.
        if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
                if (get_ran(1,1,100) < 40) 
                        return_to_start(ME,1);
                }
                else if (get_memory_cell(0) == 0) {
                        fidget(ME,25);
                        }

        // if we're in combat and the above didn't give me anything to do, just
        // stop now. Otherwise, game will keep running script, and that eats up CPU time.
        if (am_i_doing_action() == FALSE)
                end_combat_turn();
break;

beginstate 3; // attacking
        if (target_ok() == FALSE)
                set_state(START_STATE);
        do_attack();
break;

beginstate TALKING_STATE;

if (get_sdf(1,4) < 2) {
 message_dialog("If you thought the people of Vikida were paranoid of outsiders, they are nothing like the people of Asmur. The merchants refuse to really talk with you, let alone sell you any of their goods.","Disgusted, you walk away.");
 end();
}

message_dialog("The merchants of Asmur hesitate to deal with you. Their culture strongly emphasizes isolation from all other tribes, and you are from a land far stranger to them.","However, the chieftain has ordered them to deal with you. They do not make conversation; they immediately present their goods without a word.");

if (get_memory_cell(3) == 0) {
 begin_shop_mode("Ardent Armor","Merchants are busy people.  Skipping conversation, this salesperson jumps into listing prices.  The goods appear to be of decent quality, although the prices are debatable.",get_memory_cell(3),get_memory_cell(4),get_memory_cell(5));
}

if (get_memory_cell(3) == 11) {
 begin_shop_mode("Asmur Forge", "The forge at Asmur is actually quite sophisticated and produces decent quality equipment by any primitive standards. The blacksmith reluctantly sells to you.",get_memory_cell(3),get_memory_cell(4),get_memory_cell(5));
}

if (get_memory_cell(3) == 2) {
 begin_shop_mode("Devious Devices","Merchants are busy people.  Skipping conversation, this salesperson jumps into listing prices.  The goods appear to be of decent quality, although the prices are debatable.",get_memory_cell(3),get_memory_cell(4),get_memory_cell(5));
}

if (get_memory_cell(3) == 12) {
 begin_shop_mode("Asmur Fletchery","Archery is a strong art for Nephilim, even on this isolated island. For such a primative tribe, the workmanship is of high quality.", get_memory_cell(3), get_memory_cell(4), get_memory_cell(5));
}

if (get_memory_cell(3) == 4) {
 begin_shop_mode("Potent Potions","Merchants are busy people.  Skipping conversation, this salesperson jumps into listing prices.  The goods appear to be of decent quality, although the prices are debatable.",get_memory_cell(3),get_memory_cell(4),get_memory_cell(5));
}

if (get_memory_cell(3) == 5) {
 begin_shop_mode("Asmur Market","The Nephilim diet on this isolated island is different than the one you are accustomed to. However, some of the items are edible to you.", get_memory_cell(3), get_memory_cell(4), get_memory_cell(5));
 }
break;
